博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BBS论坛(十)
阅读量:6850 次
发布时间:2019-06-26

本文共 4261 字,大约阅读时间需要 14 分钟。

10.1.客户端权限验证功能完成

(1)cms/cms_profile

显示当前用户的角色和权限

                角色:                                    {% for role in user.roles %}                        {
{ role.name }} {% if not loop.last %},{% endif %} {% endfor %} 权限: {% for role in user.roles %} {
{ role.desc }} {% if not loop.last %}/{% endif %} {% endfor %}

 (2)cms/hooks.py

@bp.context_processordef cms_context_pocessor():    return {
'CMSPermission':CMSPermission}

 (3)cms/cms_base.html

不同的角色,显示不同的内容

{% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

    (4)添加用户和角色

    #添加访问者python manage.py create_cms_user -u 我是访问者 -p 123456 -e 11111@qq.compython manage.py add_user_to_role -e 11111@qq.com -n 访问者#添加运营者python manage.py create_cms_user -u 我是运营者 -p 123456 -e 22222@qq.compython manage.py add_user_to_role -e 22222@qq.com -n 运营#添加管理员python manage.py create_cms_user -u 我是管理员 -p 123456 -e 33333@qq.compython manage.py add_user_to_role -e 33333@qq.com -n 管理员

    不同的用户登录到后台cms显示不同的内容

     开发者

     

    访问者

     

    10.2.服务端权限验证功能完成

     (1)后台剩余的html页面

    cms_posts.html

    {% extends 'cms/cms_base.html' %}{% block title %}    帖子管理{% endblock %}{% block head %}    {% endblock %}{% block page_title %}    {
    { self.title() }}{% endblock %}{% block main_content %} 帖子管理页面{% endblock %}

    其它几个一样

    cms_comments.htmlcms_boards.htmlcms_fusers.htmlcms_cusers.htmlcms_croles.html

    (2)cms/decorators.py

    添加一个权限验证的装饰器

    def permission_required(permission):    def outter(func):        @wraps(func)        def inner(*args,**kwargs):            user = g.cms_user            if user.has_permission(permission):                return func(*args,**kwargs)            else:                return redirect(url_for('cms.index'))        return inner    return outter

    (3)cms/views.py

    @bp.route('/posts/')@login_required@permission_required(CMSPermission.POSTER)def posts():    return render_template('cms/cms_posts.html')@bp.route('/comments/')@login_required@permission_required(CMSPermission.COMMENTER)def comments():    return render_template('cms/cms_comments.html')@bp.route('/boards/')@login_required@permission_required(CMSPermission.BOARDER)def boards():    return render_template('cms/cms_boards.html')@bp.route('/fusers/')@login_required@permission_required(CMSPermission.FRONTUSER)def fusers():    return render_template('cms/cms_fusers.html')@bp.route('/cusers/')@login_required@permission_required(CMSPermission.CMSUSER)def cusers():    return render_template('cms/cms_cusers.html')@bp.route('/croles/')@login_required@permission_required(CMSPermission.ALL_PERMISSION)def croles():    return render_template('cms/cms_croles.html')

    (4)cms/cms_base.html

    修改url链接

    {% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

     

    转载地址:http://uwlul.baihongyu.com/

    你可能感兴趣的文章
    【总结——HTTP协议】
    查看>>
    使用WireMock 伪造 Rest 服务
    查看>>
    c/c++内存机制(一)(原)
    查看>>
    MKVToolNix v33.0.0 发布,MKV 视频编辑工具软件
    查看>>
    Hibernate 双向关联转换 JSON 防止死循环
    查看>>
    《利用Python进行数据分析·第2版》第9章 绘图和可视化
    查看>>
    内核必须懂(一): 用系统调用打印Hello, world!
    查看>>
    使用位运算来吾日三省吾身
    查看>>
    DQN三大改进(三)-Dueling Network
    查看>>
    排序算法之NB三人组
    查看>>
    设置滚动条样式,直接复制粘贴
    查看>>
    交换机的基本原理配置(二)
    查看>>
    Java集合详解2:LinkedList和Queue
    查看>>
    1. 安装docker
    查看>>
    使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
    查看>>
    C实例--判断一个字符串是否是回文数
    查看>>
    这可能是2018年IT界规模最大的裁员事件了,作为程序员的你慌了吗?
    查看>>
    视频摘要视频浓缩
    查看>>
    MP实战系列(十五)之执行分析插件
    查看>>
    webrtc 调用摄像头并实时在浏览器中显示图像
    查看>>